package com.daqian.chance.lbs.util;

import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class RestTemplateUtil {

    /**
     * 自动构建url参数
     * @param url
     * @param queryParam
     * @return
     */
    public static String buildUrlWithParam(String url, JSONObject queryParam) {
        // 检查url中已包含?，来拼接请求参数
        if (url.contains("?")) {
            url += "&" + createLinkStringByGet(queryParam);
        } else {
            url += "?" + createLinkStringByGet(queryParam);
        }
        return url;
    }

    /**
     * 把数组所有元素排序，并按照“参数=参数值”的模式用“&”字符拼接成字符串
     * @param params 需要排序并参与字符拼接的参数组
     * @return 拼接后字符串
     */
    public static String createLinkStringByGet(JSONObject params) {
        if (params == null) {
            return "";
        }
        try {
            List<String> keys = new ArrayList<>(params.keySet());
            Collections.sort(keys);
            StringBuilder prestr = new StringBuilder();
            for (int i = 0; i < keys.size(); i++) {
                String key = keys.get(i);
                String value = params.getString(key);
                if (value == null) {
                    continue;
                }
//                value = URLEncoder.encode(value, "UTF-8");
                prestr.append(key).append("=").append(value);
                //拼接时，不包括最后一个&字符
                if (i != keys.size() - 1) {
                    prestr.append("&");
                }
            }
            return prestr.toString();
        } catch (Exception e) {
            System.out.println(e);
        }
        return "";
    }
}
